package fr.bugtracker.bean.compte;

import java.util.Calendar;
import java.util.Date;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import fr.bugtracker.commun.exception.ExceptionFonctionnelle;
import fr.bugtracker.commun.outils.UtilsJsf;
import fr.bugtracker.commun.outils.UtilsSecurity;
import fr.bugtracker.entity.technique.Utilisateur;
import fr.bugtracker.service.compte.SrvCreerCompte;

/**
 * Bean pour la création de compte
 * @author Laurent
 */
@ManagedBean
@RequestScoped
public class BeanCreerCompte {

	/**
	 * service pour la création de compte
	 */
	@EJB
	private SrvCreerCompte srvCreerCompte;
	/**
	 * l'utilisateur à créer
	 */
	private Utilisateur utilisateur = new Utilisateur();

	/**
	 * Constructeur de la classe <code>BeanCreerCompte</code>.
	 */
	public BeanCreerCompte() {
	}

	/**
	 * Permet de valider la création de compte
	 */
	public void valider() {
		try {
			Date vDateCreation = Calendar.getInstance().getTime();
			srvCreerCompte.creer(utilisateur, UtilsSecurity.chiffrerMotdepasse(vDateCreation, utilisateur.getPassword()), vDateCreation);
			UtilsJsf.addMessage(FacesMessage.SEVERITY_INFO, "fonctionnel.utilisateur.info.creation", utilisateur.getUsername());
			utilisateur = new Utilisateur();
		} catch (ExceptionFonctionnelle e) {
			UtilsJsf.addMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getProperties());
		}
	}

	/**
	 * <p><b>Accès en lecture à l'attribut utilisateur.</b></p>
	 * @return Retourne l'attribut utilisateur sous forme de <code>Utilisateur</code>.
	 */
	public Utilisateur getUtilisateur() {
		return this.utilisateur;
	}

	/**
	 * <p><b>Accès en écriture à l'attribut utilisateur.</b></p>
	 * @param utilisateur L'attribut utilisateur à modifier.
	 */
	public void setUtilisateur(Utilisateur utilisateur) {
		this.utilisateur = utilisateur;
	}

}
